package dominioEntity;
import hbt.PersistentObject;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import dominioTO.ItemSolicitudTO;
import dominioTO.SolicitudRodamientosTO;

///SolicitudRodamientos lado ServidorDAO
@Entity
public class SolicitudRodamientos extends PersistentObject{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private String OrdenCompraCliente;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "cliente_id")
	private Cliente cliente;
	
	@LazyCollection(LazyCollectionOption.FALSE)
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name = "solicitud_id")
	private List<ItemSolicitud> itemSolicitudes;
	private String estado;
	private Date fechaSolicitud;
	
	private static String pendiente="Pendiente Cotizacion";
	private static String cotizada="Solicitud Cotizada";
	
	//Constructor
	public SolicitudRodamientos() {
		super();
		//Por defecto lo creo como pendiente
		
		estado= pendiente;
		
	}
	//Getters & Setters
	public String getOrdenCompraCliente() {
		return OrdenCompraCliente;
	}
	public void setOrdenCompraCliente(String ordenCompraCliente) {
		OrdenCompraCliente = ordenCompraCliente;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public List<ItemSolicitud> getItemsSolicitud() {
		return itemSolicitudes;
	}
	public void setItemSolicitud(List<ItemSolicitud> itemsSolicitud) {
		this.itemSolicitudes = itemsSolicitud;
	}
	/**
	 * @return the fechaSolicitud
	 */
	public Date getFechaSolicitud() {
		return fechaSolicitud;
	}
	/**
	 * @param fechaSolicitud the fechaSolicitud to set
	 */
	public void setFechaSolicitud(Date fechaSolicitud) {
		this.fechaSolicitud = fechaSolicitud;
	}
	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}
	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
	/**
	 * @return the cotizada
	 */
	public static String getCotizada() {
		return cotizada;
	}
	/**
	 * @param cotizada the cotizada to set
	 */
	public static void setCotizada(String cotizada) {
		SolicitudRodamientos.cotizada = cotizada;
	}
	/**
	 * @return the pendiente
	 */
	public static String getPendiente() {
		return pendiente;
	}
	/**
	 * @param pendiente the pendiente to set
	 */
	public static void setPendiente(String pendiente) {
		SolicitudRodamientos.pendiente = pendiente;
	}
	
	public void setEstadoCotizada() {
		this.estado=SolicitudRodamientos.getCotizada();
	}
	
	public SolicitudRodamientosTO getDTO()
	{
		SolicitudRodamientosTO aux = new SolicitudRodamientosTO();
		aux.setId(super.getId());
		aux.setOrdenCompraCliente(OrdenCompraCliente);
		aux.setCliente(cliente.getDTO());
		aux.setFechaSolicitud(fechaSolicitud);
		aux.setEstado(estado);
		
		if(!itemSolicitudes.isEmpty())
		{
			List<ItemSolicitudTO> itemTO = new ArrayList<ItemSolicitudTO>();
			for(ItemSolicitud itemSol : itemSolicitudes)
			{
				itemTO.add(itemSol.getDTO());
			}
			aux.setItemSolicitudes(itemTO);
		}
		
		return aux;
	}
	
	
	@Override
	public String toString() {
		return "SolicitudRodamientos [Id: "+ super.getId() +"OrdenCompraCliente=" + OrdenCompraCliente
				+ ", cliente=" + cliente + ", fechaSolicitud=" + fechaSolicitud
				+ "]";
	}
	
	
	
	
}
